package com.yh.blog.service;

import com.yh.blog.domain.Blog;
import com.yh.blog.util.Pager;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.javassist.NotFoundException;

import java.util.List;

/**
 * 博客的业务逻辑层
 */
public interface BlogService {

    /**
     * 新增博客
     * @param blog 博客对象
     * @return 布尔值
     */
    public boolean append(Blog blog);

    /**
     * 删除博客
     * @param blogId 博客id
     * @return 布尔值
     */
    public boolean remove(Integer blogId);

    /**
     * 修改博客
     * @param blog 博客对象
     * @return 布尔值
     */
    public boolean modify(Blog blog);

    /**
     * 博客详情
     * @param blogId 博客id
     * @return 博客对象
     */
    public Blog detail(Integer blogId);

    /**
     * 将markdown文本转换为html格式
     * @param blodId 博客id
     * @return 博客对象
     */
    public Blog detailWithMark(Integer blodId) throws NotFoundException;

    /**
     * 根据条件查询博客列表
     * @param condition 查询条件
     * @param page 页码
     * @return 博客列表数据
     */
    public Pager<Blog> list(Blog condition,Integer page);

    /**
     * 推荐博客列表
     * @return 推荐博客集合
     */
    public List<Blog> recommendList();

    /**
     * 发布的博客总数
     * @return 博客总数
     */
    public int blogTotalNums();

    /**
     * 博客浏览总数
     * @return 浏览总数
     */
    public int viewsTotalNums();

    /**
     * 博客评论总数
     * @return 评论总数
     */
    public int commentsTotalNums();

    /**
     * 博客留言总数
     * @return 留言总数
     */
    public int messagesTotalNums();

    /**
     * 查询所有博客-->不分页，有条件
     * @return 博客对象集合
     */
    public List<Blog> list(@Param("condition") Blog condition);

    /**
     * 模糊查询搜索域内容
     * @param searchText 搜索域文本
     * @param page 页码
     * @return 博客列表
     */
    public Pager<Blog> searchBlog(String searchText,Integer page);

}
